As computer processing and related technologies continue to evolve, memory and storage requirements continue to increase. Where once a few thousand bytes of memory could sufficiently handle an operating system and related processes, now many gigabytes of memory may be required in some complex processing systems. Furthermore, in some distributed systems, memory structures may be shared thus increasing the complexity of memory management. As such, the complexity of these systems requires efficient and flexible memory management schemes.
As can be appreciated, even relatively simple systems typically process many millions of instructions per second. In some or all of those processes, some memory components may be accessed. Managing those memory components properly, therefore, is critical to maintain on-going processes. In shared memory systems, memory data structures may be created to share, for example, a common address space for two or more processes. In some systems, sharing data in this manner allows processes to exchange data without passing through a CPU. Thus, higher transfer speeds may be attained. However, shared memory systems require still more complex memory management techniques in order to maintain on-going processes. In shared memory systems, memory addressing may be managed by using searchable tables to store memory allocation and location information.
In distributed memory systems, as can be appreciated, still more sophisticated memory management techniques must be utilized. Memory address information stored in searchable tables as well as related memory data structures may be used in order to attain data transfer efficiencies similar to local systems. One type of distributed memory communication technique is remote direct memory access (RDMA). RDMA allows data to be transmitted from the memory of one computer to the memory of another computer without passing through either device's CPU, without needing extensive buffering, and without calling system kernel functions. INFINIBAND™ is an example of a form of RDMA. Additionally, in distributed memory systems, memory management may, in some examples, compound drastically.
For example, in a distributed memory system where two processes are configured with a shared memory space, at least two entries (one for each process) in a searchable table may be required to appropriately address a shared memory space. In some examples, even more entries per process may be required. As the number of processes requiring shared memory increases, so too do the number of entries corresponding to shared memory. As a result, when a shared memory space is accessed by a process, the process must first search every shared memory entry in order to appropriately access its corresponding shared memory space. It may be desirable, therefore, to reduce the number of entries corresponding to shared memory resulting in greater memory management efficiency. Therefore, systems and method for identifying and registering a range of virtual memory are presented.